#ifndef _PLANTSVSZOMBIES_H_
#define _PLANTSVSZOMBIES_H_

#include "Other/Data.h"
#include "AudioEngine.h"
#include "cocos2d.h"
#include "ui/CocosGUI.h"
USING_NS_CC;
using namespace cocos2d;
using namespace ui;

// 僵尸vs植物 类  实现 僵尸的攻击  和 植物的各种攻击  和其他操作 
class PlantVsZombies : public Node { 
public:
	PlantVsZombies(); // 构造函数
	~PlantVsZombies() = default; //默认虚构
	virtual void update(float update_time);  //调度函数  计时器 实现第n波进攻  + 植物 （产生攻击 ） + 僵尸产生攻击  +	豌豆检测 + 阳光收集  +游戏失败

	void init_data();//用于初始化 数据 
	void init_scene(Scene* scene_);//用于绑定场景，addChild     游戏场景：new一个节点PvsZ  然后 this->addchild(本节点)

	Zombie* get_row_left_zombie(int row_);//获取在第row路最左边的僵尸  
	Plant* get_row_right_plant(int row_);//获取在第row行最右边的植物

	virtual void peashooter_shoot(Plant* plant_);//豌豆射手发射一个豌豆

	virtual void create_zombie(int row_, ZombieType type_);//在row行创建一个某种类型的僵尸
	virtual void create_plant(int row_, int col_, PlantType type_);//在row行col列创建一个某种类型的植物

	virtual bool judge_plant(int row_, int col_);//用于判断在row行col列是否可以种植植物  需要

	virtual bool judge_vec2_in_row_col(Vec2 vec_position, int& row_, int& col_);//判断这个vec2坐标 鼠标点击的位置是不是在草地区域  结合鼠标使用种植植物 

	virtual void create_sun(int x_,int y_);//生成太阳 在 x y -》写到Vec里面

	Scene* scene;//场景节点  用于添加到游戏场景

	//时间变量  用于控制 对应时间段 僵尸的生成 
	double time1;
	double time2;
	double time3;
	double time4;
	double time5;
	double time6;
	double time7;
	double time8;
	// 判断是否经过了这个时间段了
	bool is_pass_time0;
	bool is_pass_time1; 
	bool is_pass_time2;
	bool is_pass_time3;
	bool is_pass_time4;
	bool is_pass_time5;
	bool is_pass_time6;
	bool is_pass_time7;
	bool is_pass_time8;
	
	double time_count;//用于计时，到达指定时间，生成对应波次的僵尸
	double pruduce_time ; // 用于生成时间间隔  比如能被一个数整除就生成  time_count % produce == 0 

	bool is_game_fail;//判断游戏失败
	bool is_game_success;//判断游戏是否获得胜利
};


#endif // !_PLANTSVSZOMBIES_H_